% fname: routing_xy__topology_8x8__.m
% ./noxim -routing xy -dimx 8 -dimy 8  -sim 10000 -warmup 2000 -size 8 8 -buffer 2 

function [max_pir, max_throughput, min_delay] = routing_xy__topology_8x8__(symbol)

data = [
%             pir      avg_delay     throughput      max_delay       rpackets         rflits
            0.007        19.0642      0.0565176            123           3616          28937
            0.007         19.226      0.0568437            124           3641          29104
            0.007         19.063      0.0543164            102           3476          27810
            0.007         19.209      0.0557285            106           3565          28533
            0.007        19.6705      0.0563633            120           3606          28858
            0.007        18.7833      0.0565898            106           3622          28974
            0.007        18.7028      0.0552578             89           3536          28292
            0.007        18.7434      0.0543262             93           3476          27815
            0.007        19.7795       0.056666            108           3628          29013
            0.007        18.9605      0.0562578            115           3599          28804
            0.007         19.037      0.0545645            157           3489          27937
            0.007        19.4041      0.0562656            113           3601          28808
            0.007        19.2186      0.0573047            110           3669          29340
            0.007        19.5446      0.0551426            153           3529          28233
            0.007        19.0182      0.0548086            106           3510          28062
            0.007        19.6233      0.0559199            108           3576          28631
            0.007        18.9091      0.0549219             83           3511          28120
            0.007        18.6826       0.056123             96           3592          28735
            0.007         18.885      0.0553301            120           3539          28329
            0.007        19.1664      0.0561523            123           3593          28750
            0.008        20.7893      0.0645645            124           4129          33057
            0.008        20.3003      0.0632695            115           4053          32394
            0.008        20.6728      0.0627988            128           4019          32153
            0.008        21.0419      0.0648965            126           4152          33227
            0.008        21.2854      0.0632168            121           4043          32367
            0.008        20.7585      0.0635684            147           4067          32547
            0.008        20.5606       0.062209            129           3980          31851
            0.008        21.0007      0.0654473            125           4185          33509
            0.008        21.8526      0.0636152            154           4071          32571
            0.008        20.6834      0.0637617            125           4081          32646
            0.008         22.138      0.0661602            165           4233          33874
            0.008        21.4081      0.0656523            189           4202          33614
            0.008        21.6216      0.0653223            151           4183          33445
            0.008        20.7677       0.062957            118           4029          32234
            0.008        21.0779      0.0648145            134           4147          33185
            0.008        21.5365      0.0649375            141           4155          33248
            0.008        21.0123      0.0636562            152           4077          32592
            0.008        21.0688         0.0625            135           3998          32000
            0.008        20.7081       0.064291            127           4115          32917
            0.008        20.8733       0.064502            143           4129          33025
            0.009        24.0466      0.0731875            154           4680          37472
            0.009        22.3151      0.0712383            148           4563          36474
            0.009        23.6047      0.0719141            237           4604          36820
            0.009        23.7574      0.0722852            203           4629          37010
            0.009         23.011      0.0698027            136           4466          35739
            0.009        22.9241      0.0710352            159           4548          36370
            0.009        23.6128      0.0714805            189           4577          36598
            0.009        23.6262      0.0722656            164           4626          37000
            0.009        22.2942      0.0719785            147           4609          36853
            0.009        23.4264      0.0719297            180           4608          36828
            0.009        22.9095      0.0733105            159           4695          37535
            0.009        23.2035      0.0714043            280           4571          36559
            0.009        23.6943       0.072623            177           4648          37183
            0.009        23.4575      0.0723008            153           4627          37018
            0.009        22.7388      0.0714609            145           4571          36588
            0.009        22.3293      0.0701719            137           4491          35928
            0.009        23.7721      0.0728477            203           4660          37298
            0.009        23.0212      0.0720547            143           4613          36892
            0.009        22.8038      0.0723105            131           4628          37023
            0.009        23.2039      0.0717227            214           4591          36722
             0.01        25.3943      0.0810195            205           5186          41482
             0.01         25.911      0.0811367            170           5192          41542
             0.01        25.4528      0.0776719            167           4971          39768
             0.01        26.3619       0.081623            240           5225          41791
             0.01        28.0165      0.0821836            274           5258          42078
             0.01        25.2249      0.0796465            147           5099          40779
             0.01        25.4718       0.080457            199           5148          41194
             0.01        24.0637      0.0782305            165           5010          40054
             0.01        24.9428      0.0784668            192           5021          40175
             0.01        25.7471      0.0802051            289           5133          41065
             0.01        26.8759      0.0810723            256           5190          41509
             0.01        25.0103      0.0815508            165           5218          41754
             0.01        25.0206      0.0787539            200           5041          40322
             0.01        25.8456      0.0797441            205           5104          40829
             0.01         25.927      0.0807578            213           5166          41348
             0.01        26.1824      0.0800684            201           5127          40995
             0.01        25.7472      0.0813262            253           5206          41639
             0.01        25.4401      0.0800566            234           5126          40989
             0.01        26.7966      0.0807148            245           5168          41326
             0.01        25.3458      0.0804082            217           5148          41169
            0.011        31.0276      0.0883652            408           5654          45243
            0.011        29.1093      0.0878828            281           5627          44996
            0.011        30.1908      0.0879375            235           5625          45024
            0.011        28.4253      0.0864004            286           5528          44237
            0.011        29.5072      0.0879395            216           5629          45025
            0.011        30.3101      0.0883887            404           5659          45255
            0.011        29.6275       0.088584            263           5672          45355
            0.011        28.9552      0.0889141            206           5692          45524
            0.011        28.8612      0.0888867            238           5692          45510
            0.011        30.7721      0.0886211            224           5666          45374
            0.011        29.1674      0.0900508            194           5759          46106
            0.011        26.7073      0.0865586            205           5541          44318
            0.011        29.2382      0.0876992            239           5614          44902
            0.011        32.7073      0.0885039            297           5664          45314
            0.011        27.7323      0.0869297            182           5563          44508
            0.011        28.2023      0.0867441            191           5552          44413
            0.011        28.4671      0.0880273            226           5637          45070
            0.011        30.8024      0.0889863            246           5694          45561
            0.011        28.0708      0.0892832            275           5710          45713
            0.011        28.8572      0.0867852            410           5555          44434
            0.012        33.5828      0.0955352            421           6114          48914
            0.012        37.9186      0.0974785            373           6239          49909
            0.012        36.2172      0.0957266            353           6127          49012
            0.012        33.0129      0.0943867            318           6043          48326
            0.012        36.6587      0.0958184            564           6132          49059
            0.012        36.4767      0.0973105            309           6224          49823
            0.012        34.3399      0.0952617            278           6098          48774
            0.012        33.6124      0.0956836            316           6119          48990
            0.012        32.3153      0.0947754            246           6065          48525
            0.012         32.974      0.0949102            213           6074          48594
            0.012        35.1912      0.0965137            338           6177          49415
            0.012        36.5672      0.0974805            679           6239          49910
            0.012        32.8968      0.0960332            256           6146          49169
            0.012        33.9596       0.098668            301           6314          50518
            0.012        33.0623      0.0922422            307           5903          47228
            0.012        32.2817      0.0962559            308           6163          49283
            0.012        34.2548      0.0950938            320           6087          48688
            0.012        33.5265      0.0953262            228           6102          48807
            0.012        33.2787      0.0955156            320           6110          48904
            0.012         40.792      0.0970469            482           6208          49688
            0.013        42.8297       0.101855            320           6517          52150
            0.013        42.1075        0.10351            458           6622          52997
            0.013        39.5798        0.10285            274           6583          52659
            0.013         46.372       0.103768            457           6640          53129
            0.013        47.4271       0.103236            455           6607          52857
            0.013        44.1571       0.104945            460           6717          53732
            0.013        45.0534       0.106504            719           6818          54530
            0.013        40.4596       0.104686            363           6702          53599
            0.013        44.2596       0.104379            403           6680          53442
            0.013        41.1924       0.104506            374           6689          53507
            0.013        40.4502       0.102627            318           6566          52545
            0.013        43.3786       0.104123            509           6664          53311
            0.013        37.2518       0.101615            329           6502          52027
            0.013        38.1684        0.10275            336           6573          52608
            0.013        37.3117       0.103279            296           6608          52879
            0.013         44.221       0.101977            492           6529          52212
            0.013        43.9082       0.104693            382           6700          53603
            0.013        44.3714       0.103289            339           6611          52884
            0.013        38.2334       0.101115            369           6474          51771
            0.013        37.9466         0.1015            423           6496          51968
            0.014        49.7882       0.110482            566           7072          56567
            0.014        52.0929        0.11117            663           7115          56919
            0.014        44.9865       0.111127            333           7111          56897
            0.014        62.9533        0.11167            903           7145          57175
            0.014        56.5679       0.113023            537           7234          57868
            0.014        54.0922       0.113168            615           7244          57942
            0.014        76.3718       0.113979            850           7295          58357
            0.014        49.5349        0.10985            479           7031          56243
            0.014         61.911       0.114482            506           7327          58615
            0.014         53.561       0.112322            455           7189          57509
            0.014        52.3785       0.112529            533           7203          57615
            0.014        54.8736        0.11102            602           7106          56842
            0.014        53.4902       0.110527            545           7073          56590
            0.014        57.6714       0.110895            985           7096          56778
            0.014        49.6458       0.109492            593           7008          56060
            0.014        53.0979        0.10985            499           7031          56243
            0.014        50.4856       0.110463            442           7069          56557
            0.014        81.9579       0.113498           1098           7267          58111
            0.014        57.1547       0.111777            509           7155          57230
            0.014        61.3637       0.111834            781           7157          57259
            0.015        98.2052        0.11998            820           7680          61430
            0.015        81.1543       0.119789            991           7668          61332
            0.015        78.4738       0.120271            680           7698          61579
            0.015        119.738       0.120391           1435           7705          61640
            0.015        77.0425       0.120818            600           7734          61859
            0.015        99.6675       0.119566           1162           7651          61218
            0.015        83.9739       0.120725            873           7726          61811
            0.015        87.3187        0.12198            704           7810          62454
            0.015        90.3574       0.119596           1435           7653          61233
            0.015        106.178       0.120969           1053           7741          61936
            0.015        106.592       0.118607           1795           7593          60727
            0.015        72.6723       0.117531            818           7522          60176
            0.015        83.9647         0.1194            959           7648          61133
            0.015        87.5373       0.118746            851           7601          60798
            0.015         112.21       0.122035           1212           7811          62482
            0.015        85.6774       0.120008            755           7678          61444
            0.015        81.9901       0.119582            748           7654          61226
            0.015        94.1111       0.120619            801           7720          61757
            0.015        93.4926       0.119939            950           7675          61409
            0.015        80.0421       0.119082            759           7620          60970
            0.016        149.515       0.126258           1166           8078          64644
            0.016        163.437       0.127312           1879           8147          65184
            0.016        168.599       0.125217           1387           8011          64111
            0.016         300.79       0.125023           2452           8000          64012
            0.016        176.508       0.125795           2535           8047          64407
            0.016        185.839        0.12543           3362           8028          64220
            0.016        231.767       0.126031           2876           8070          64528
            0.016         202.27       0.125342           2572           8021          64175
            0.016        217.831       0.126529           2018           8097          64783
            0.016        204.837       0.126939           2177           8123          64993
            0.016        144.246       0.125742           1459           8048          64380
            0.016        183.597       0.127324           1634           8145          65190
            0.016        202.101        0.12692           1995           8122          64983
            0.016        129.426       0.125383           1318           8024          64196
            0.016        186.547       0.124248           2191           7953          63615
            0.016        189.586       0.127363           1726           8151          65210
            0.016        253.314       0.127826           2944           8178          65447
            0.016        205.047       0.125629           3052           8042          64322
            0.016        157.844       0.127441           1899           8161          65250
            0.016        197.964       0.128375           1527           8217          65728
];

rows = size(data, 1);
cols = size(data, 2);

data_delay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+1);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_delay = [data_delay; data(ifirst, 1:cols-5), avg ci];
end

figure(1);
hold on;
plot(data_delay(:,1), data_delay(:,2), symbol);

data_throughput = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+2);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_throughput = [data_throughput; data(ifirst, 1:cols-5), avg ci];
end

figure(2);
hold on;
plot(data_throughput(:,1), data_throughput(:,2), symbol);

data_maxdelay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+3);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_maxdelay = [data_maxdelay; data(ifirst, 1:cols-5), avg ci];
end

figure(3);
hold on;
plot(data_maxdelay(:,1), data_maxdelay(:,2), symbol);


%-------- Saturation Analysis -----------
slope=[];
for i=2:size(data_throughput,1),
    slope(i-1) = (data_throughput(i,2)-data_throughput(i-1,2))/(data_throughput(i,1)-data_throughput(i-1,1));
end

for i=2:size(slope,2),
    if slope(i) < (0.95*mean(slope(1:i)))
        max_pir = data_throughput(i, 1);
        max_throughput = data_throughput(i, 2);
        min_delay = data_delay(i, 2);
        break;
    end
end
